package com.googlecode.wicketcharts.highcharts.options;

import java.awt.Color;
import java.util.List;

/**
 * This is the main class for configuring a chart. The structure of this class
 * is designed to be very close to the Highcharts options object. For
 * explanations of all options, please consult the Highcharts API reference.
 * <p/>
 * The options object will be serialized to a JSON object which is passed into
 * the Highcharts Javascript library. Options that are not set (i.e. that are
 * null), are not serialized into JSON, so that the default values of the
 * Highcharts library will be used.
 * 
 * @see <a href="http://api.highcharts.com/highcharts">http://api.highcharts.com/highcharts</a>
 * @author Tom Hombergs (tom.hombergs@gmail.com)
 * 
 */
public class Options extends JsonObject {

	private static final long serialVersionUID = 1L;

	private ChartOptions chart;

	@SuppressWarnings("rawtypes")
	private List<? extends SeriesOptions> series;

	private List<Color> colors;

	private Title title;
	
	private Title subTitle;

	private XAxis xAxis;

	private YAxis yAxis;

	private LegendOptions legend;

	private LanguageOptions lang;

	private ExportingOptions exporting;

	private CreditOptions credits;
	
	private PlotOptionsChoice plotOptions;
	
	private DummyOption tooltip;
	
	private Global global;
	
	private DummyOption labels;
	
	private Loading loading;
	
	private Navigation navigation;
	
	public ChartOptions getChart() {
		return chart;
	}

	public void setChart(ChartOptions chart) {
		this.chart = chart;
	}

	public LanguageOptions getLang() {
		return lang;
	}

	public void setLang(LanguageOptions lang) {
		this.lang = lang;
	}

	public CreditOptions getCredits() {
		return credits;
	}

	public void setCredits(CreditOptions credits) {
		this.credits = credits;
	}

	public Global getGlobal() {
		return global;
	}

	public void setGlobal(Global global) {
		this.global = global;
	}

	public DummyOption getLabels() {
		return labels;
	}

	public void setLabels(DummyOption labels) {
		this.labels = labels;
	}

	public Loading getLoading() {
		return loading;
	}

	public void setLoading(Loading loading) {
		this.loading = loading;
	}

	public Navigation getNavigation() {
		return navigation;
	}

	public void setNavigation(Navigation navigation) {
		this.navigation = navigation;
	}

	public void setChartOptions(ChartOptions chart) {
		this.chart = chart;
	}

	public ChartOptions getChartOptions() {
		return chart;
	}

	public void setTitle(Title title) {
		this.title = title;
	}

	public Title getTitle() {
		return title;
	}

	public void setxAxis(XAxis xAxis) {
		this.xAxis = xAxis;
	}

	public XAxis getxAxis() {
		return xAxis;
	}

	@SuppressWarnings("rawtypes")
	public void setSeries(List<? extends SeriesOptions> series) {
		this.series = series;
	}

	@SuppressWarnings("rawtypes")
	public List<? extends SeriesOptions> getSeries() {
		return series;
	}

	public void setLegend(LegendOptions legend) {
		this.legend = legend;
	}

	public LegendOptions getLegend() {
		return legend;
	}

	public void setLanguageOptions(LanguageOptions lang) {
		this.lang = lang;
	}

	public LanguageOptions getLanguageOptions() {
		return lang;
	}

	public void setExporting(ExportingOptions exporting) {
		this.exporting = exporting;
	}

	public ExportingOptions getExporting() {
		return exporting;
	}

	public void setColors(List<Color> colors) {
		this.colors = colors;
	}

	public List<Color> getColors() {
		return colors;
	}

	public void setyAxis(YAxis yAxis) {
		this.yAxis = yAxis;
	}

	public YAxis getyAxis() {
		return yAxis;
	}

	public CreditOptions getCreditOptions() {
		return credits;
	}

	public void setCreditOptions(CreditOptions credits) {
		this.credits = credits;
	}

	public void setPlotOptions(PlotOptionsChoice plotOptions) {
		this.plotOptions = plotOptions;
	}

	public PlotOptionsChoice getPlotOptions() {
		return plotOptions;
	}

	public void setSubTitle(Title subTitle) {
		this.subTitle = subTitle;
	}

	public Title getSubTitle() {
		return subTitle;
	}

	public void setTooltip(DummyOption tooltip) {
		this.tooltip = tooltip;
	}

	public DummyOption getTooltip() {
		return tooltip;
	}

}
